iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

AWS架構應用系列 第 17

如何產生流量與監控流量 - Day17

  • 分享至 

  • xImage
  •  

如何產生流量與監控流量 - Day17

我們先前的例子都是透過 CPU 使用率來決定擴展策略,但是流量一直都是比較直覺的判斷方式,因為流量是使用者使用應用程式次數的一個特徵,今天要做的就是如何來產生我們想要的流量,以及透過CloudWatch來觀察。

Jmeter

Jmeter 是 Apache 開源專案,使用Java開發的測試工具,主要用來做功能測試和性能測試(壓力測試/負載測試),我們將會用它來進行流量的產生。

安裝 Java SE

千萬要記得安裝的目錄,如果下一個動作沒成功的話,可以手動設定環境變數,把Java的路徑直接加到環境變數中
PATH= ....;C:\Program Files\Java\jdk-14.0.2\bin
JAVA_HOME = C:\Program Files\Java\jdk-14.0.2

透過控制台直接設定 Java 環境
圖 1、透過控制台直接設定 Java 環境

安裝 Jmeter

下載壓縮檔,解壓縮完直接執行 ./bin/jmeter.bat ,Jmeter 是支援中文的, 啟動Jmeter 後, 點擊 Options -> Choose Language 來選擇語言。

Apache Jmeter官方網站下載壓縮檔
圖 2、 Apache Jmeter官方網站下載壓縮檔

Jmeter 改變語言設定
圖 3、 Jmeter 改變語言設定

設定 Jmeter

我們的目標是在特定的時間產生指定的流量,比方說,在 60 秒內產生 1000 次的網頁讀取
測試目標: ithomealb-1480018609.ap-southeast-1.elb.amazonaws.com (由 AWS ELB 所提供)
模擬使用者: 10 個使用者
請求頻率: 1,000/minute

步驟 1. 新建 Thread Group
jmeter 的所有任務都由執行緒來進行,所有任務都必須在執行緒組下面創建,在 AWS Test Plan 按左鍵。

新建 Thread Group
圖 4、 新建 Thread Group

執行緒數量 Number of Threads: 一個用戶占一個執行緒, 10 個執行緒就是模擬 10 個用戶
準備時長 Ramp-Up Period(in seconds): 設置執行緒需要多長時間全部啟動。如果執行緒數為 10 ,準備時長為 10 ,那麼需要1秒鐘啟動 1 個執行緒。
Loop Count: 每個執行緒發送請求的次數。如果執行緒數為 10 ,迴圈次數為 10 ,那麼每個執行緒發送10次請求。總請求數為 10*10 = 100 。如果勾選了“永遠”,那麼所有執行緒會一直發送請求,直到選擇停止運行腳本。

設定 Thread Group
圖 5、 設定 Thread Group

步驟 2. 新增 HTTP Request
我們是測試網頁所以要建立 HTTP Request,在 執行緒群組1000 按左鍵,新增 > 取樣 > HTTP要求

新增 HTTP Request
圖 6、 新增 HTTP Request

協定: HTTP
主機: ithomealb-1480018609.ap-southeast-1.elb.amazonaws.com

設定 HTTP Request
圖 7、 設定 HTTP Request

步驟 3. 新增計時器
設定在固定時間內發出特定數量的請求,在 執行緒群組1000 按左鍵,新增 > 計時器 > 固定時隔

新增計時器
圖 8、 新增計時器

固定處理量計時器 Constant Throughput Timer:通過計算使總處理量(以每分鐘計)盡可能接近給定的數字。當然,如果伺服器不能處理它,或者如果其他計時器或耗時的測試原件阻止它,那麼處理量將更低。作用在於控制輸送量,要注意把計時器放在執行緒群組,並在請求的上面

目標處理量 Target throughput(in samples per minute): 1000
Calculate Throughput based on : all active threads in current thread group

計算處理量的其他設定:

  • this thread only: 設置每個執行緒的處理量。處理量總和為 = 執行緒數 * 該值。
  • all active threads in current thread group:處理量被分攤到當前執行緒組所有的活動執行緒上。每個執行緒將根據上次執行時間延遲。
  • all active threads:處理量被分配到所有執行緒組的所有活動執行緒的總處理量。每個執行緒將根據上次執行時間延遲。在這種情況下,每個執行緒組需要一個具有相同設置的固定處理量計時器。
  • all active threads in current thread group (shared):同上,但是每個執行緒是根據組中的執行緒的上一次執行時間來延遲。相當於執行緒組組內排隊。
  • all active threads (shared):同上,但每個執行緒是根據執行緒的上次執行時間來延遲。相當於讓所有執行緒組整體排隊。

設定計時器
圖 9、 設定計時器

步驟 4. 新增測試結果 Summary Report
設定在固定時間內發出特定數量的請求,在 AWS HTTP Request 按左鍵,新增 > 接聽 > Summary Report

新增 Summary Report
圖 10、 新增 Summary Report

可以直接按下開始後就會開始記錄。

觀察  Summary Report
圖 11、 觀察 Summary Report

設定 CloudWatch 儀表板

按下上方的服務按鈕,選擇 CloudWatch ,進入 CloudWatch 主控台後,按下右方功能選單儀表板,按下建立儀表板後,輸入要觀察的衡量指標值 RequestCount

儀表板名稱: JmeterRequestCount

建立 CloudWatch 儀表板畫面
圖 12、建立 CloudWatch 儀表板畫面

設定 CloudWatch 儀表板中 Widget 類型
圖 13、設定 CloudWatch 儀表板中 Widget 類型

Widget 的資料來源選擇 指標值( Metrics )

設定 Widget 的資料來源
圖 14、設定 Widget 的資料來源

指標值設定為 Singapore > 全部 > ApplicationELB > 每個 AppELB 指標 > RequestCount ,要注意要確定看到上面的圖型有資料才能確定已經正確找到指標值,因為有時候會有很多個 AppELB 實體,所以需要去找一下ALB ID確認一下

設定 RequestCount 指標值
圖 15、設定 RequestCount 指標值

因為需要知道 1 分鐘內有多少個請求,所以需要把_統計資料_從平均數改成樣本數期間 5 分鐘改成 1 分鐘。

設定圖形化指標
圖 16、設定圖形化指標

建立 JmeterRequestCount 儀表板的畫面如下, Jmeter 還一直都有在發出請求

JmeterRequestCount 儀表板
圖 17、JmeterRequestCount 儀表板

References


上一篇
ASG 簡單縮放政策 Simple scaling policies - Day16
下一篇
根據流量來進行負載平衡器的運作 - Day18
系列文
AWS架構應用24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言